﻿using System.Collections.Generic;
using System.Linq;
using System.Windows.Navigation;
using System.Windows.Threading;
using SocialApi.TestApp.Models;
using SocialApi.TestApp.Models.Enums;
using SocialApi.TestApp.Views;

namespace SocialApi.TestApp.ViewModels
{
    public class MainViewModel : ViewModelBase
    {
        #region Настройка

        /// <summary>
        /// Список социальных сетей
        /// </summary>
        public IList<Social> Socials { get; private set; }

        /// <summary>
        /// Текущая социальная сеть
        /// </summary>
        public Social CurrentSocial
        {
            get { return _currentSocial; }
            set
            {
                _currentSocial = value;
                OnPropertyChanged();
            }
        }
        private Social _currentSocial;

        /// <summary>
        /// Главная модель приложения
        /// </summary>
        /// <param name="dispatcher">Текущий <see cref="Dispatcher"/></param>
        /// <param name="navigationService">Текущий <see cref="NavigationService"/></param>
        public MainViewModel(Dispatcher dispatcher, NavigationService navigationService)
            : base(dispatcher, navigationService)
        {
            GenerateSocial();
            UseSocialCommand = new DelegateCommand(UseSocial, CanUseSocial);
        }

        private void GenerateSocial()
        {
            Socials = new List<Social>
            {
                new Social
                {
                    SocialType = SocialType.None,
                    Description = null,
                    NavigateUri = null,
                    NavigateUriName = null
                },
                new Social
                {
                    SocialType = SocialType.Instagram,
                    Description = "Instagram — бесплатное приложение обмена фотографиями, позволяющее пользователям делать фотографии, применять к ним фильтры, а также распространять их через свой сервис и ряд других социальных сетей.",
                    NavigateUri = "http://instagram.com",
                    NavigateUriName = "Instagram"
                },
            };
            CurrentSocial = Socials.FirstOrDefault();
        }

        #endregion

        #region Попробовать API

        public DelegateCommand UseSocialCommand { get; private set; }

        private void UseSocial(object sender)
        {
            switch (CurrentSocial.SocialType)
            {
                case SocialType.Instagram:
                    ApplicationHelper.Hide(new ConsoleControl("SocialApi.Instagram demo", CurrentSocial.SocialType));
                    break;
            }
        }

        private bool CanUseSocial(object sender)
        {
            return CurrentSocial != null && CurrentSocial != Socials.FirstOrDefault();
        }

        #endregion
    }
}